home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antenna2 / cheby.bas < prev    next >
BASIC Source File  |  1986-08-12  |  4KB  |  138 lines

  1. 10 '  chebychev synthesis
  2. 20 '  ahmad faizal mohd zain
  3. 30 '      7/30/86
  4. 40 CLS:KEY OFF
  5. 50 PRINT"                         CHEBYCHEV SYNTHESIS":PRINT:PRINT
  6. 60 DIM A(100),F(200),Y(200)
  7. 70 DIM B(100),W(100),ANG(100)
  8. 80 DEF FN ARCOSH(X)=LOG(X+SQR(X*X-1))
  9. 90 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
  10. 100 PI=3.141592
  11. 110 INPUT "Number of elements ";NE
  12. 120 IF NE MOD 2 =1 THEN M=(NE-1)/2 ELSE M=NE/2
  13. 130 INPUT"Element spacing ";D
  14. 140 INPUT"Side-lobe-level (in dB) ";RR
  15. 150 R=10^(-RR/20)
  16. 160 X=(1/(NE-1))*FN ARCOSH(R)
  17. 170 X0=(EXP(X)+EXP(-X))/2
  18. 180 X=(1/(NE-1))*FN ARCOSH(R/1.414)
  19. 190 X=(1/X0)*(EXP(X)+EXP(-X))/2
  20. 200 X=1.570796-ATN(X/SQR(1-X*X))
  21. 210 X=X/(PI*D)
  22. 220 HP=2*ATN(X/SQR(1-X*X))
  23. 230 PRINT:PRINT
  24. 240 PRINT USING"half power beamwidth is ##.##";HP*180/PI;:PRINT" deg."
  25. 250 IF NE MOD 2=1 THEN 600
  26. 260 FOR N=1 TO M
  27. 270   SUM=0
  28. 280   FOR Q=N TO M
  29. 290     X=Q+M-2:GOSUB 970:A=XX
  30. 300     X=Q-N:GOSUB 970:B=XX
  31. 310     X=Q+N-1:GOSUB 970:C=XX
  32. 320     X=M-Q:GOSUB 970:DD=XX
  33. 330     E=(-1)^(M-Q)
  34. 340     F=(X0)^(2*Q-1)
  35. 350     SUM=SUM+E*F*A*(2*M-1)/(B*C*DD)
  36. 360   NEXT Q
  37. 370 A(N)=SUM
  38. 380 NEXT N
  39. 390 PRINT:PRINT"The current elements (normalised) are :-"
  40. 400 FOR N=1 TO M
  41. 410 A(N)=A(N)/A(M)
  42. 420 PRINT "I(";N;") = ";:PRINT USING "##.####";A(N)
  43. 430 NEXT N
  44. 440 K=0
  45. 450 FOR U=-1 TO 1 STEP 1/100
  46. 460   SUM=0
  47. 470   FOR N=1 TO M
  48. 480     SUM=SUM+A(N)*COS((2*N-1)*PI*D*U)
  49. 490   NEXT N
  50. 500   F=ABS(2*SUM)
  51. 510   Y(K)=20*FN LOGTEN(F)
  52. 520   IF Y(K)>YMAX THEN YMAX=Y(K)
  53. 530 K=K+1
  54. 540 NEXT U
  55. 550 YMIN=2*RR+YMAX
  56. 560 GOSUB 1170:GOSUB 1250
  57. 570 GOSUB 1030
  58. 580 GOSUB 1410
  59. 590 END
  60. 600 FOR N=1 TO M+1
  61. 610   SUM=0
  62. 620   FOR Q=N TO M+1
  63. 630     X=Q+M-2:GOSUB 970:A=XX
  64. 640     X=Q-N:GOSUB 970:B=XX
  65. 650     X=Q+N-2:GOSUB 970:C=XX
  66. 660     X=M-Q+1:GOSUB 970:DD=XX
  67. 670     E=(-1)^(M-Q+1)
  68. 680     F=(X0)^(2*(Q-1))
  69. 690     EPSI=2
  70. 700     SUM=SUM+E*F*A*2*M/(EPSI*B*C*DD)
  71. 710   NEXT Q
  72. 720   A(N)=SUM
  73. 730 NEXT N
  74. 740 PRINT:PRINT"The current elements (normalised) are :-"
  75. 750 FOR N=1 TO M+1
  76. 760 B(N)=A(N)
  77. 770   A(N)=A(N)/A(M+1)
  78. 780 PRINT "I(";N;") = ";:PRINT USING "##.####";A(N)
  79. 790 NEXT N
  80. 800 K=0
  81. 810 FOR U=-1 TO 1 STEP 1/100
  82. 820   SUM=0
  83. 830   FOR N=1 TO M
  84. 840     SUM=SUM+A(N+1)*COS(2*N*PI*D*U)
  85. 850   NEXT N
  86. 860   SUM=2*SUM+A(1)
  87. 870   F=ABS(SUM)
  88. 880   Y(K)=20*FN LOGTEN(F)
  89. 890   IF Y(K)>YMAX THEN YMAX=Y(K)
  90. 900 K=K+1
  91. 910 NEXT U
  92. 920 YMIN=2*RR+YMAX
  93. 930 GOSUB 1170:GOSUB 1250
  94. 940 GOSUB 1030
  95. 950 GOSUB 1410
  96. 960 END
  97. 970 ' Subroutine to calculate factorials
  98. 980 XX=1
  99. 990 IF X=0 OR X=1 THEN RETURN
  100. 1000 XX=XX*X
  101. 1010 X=X-1
  102. 1020 GOTO 990
  103. 1030 LOCATE 1,10:PRINT"Number of elements are ";NE
  104. 1040 LOCATE 2,10:PRINT "element spacing is ";D;" lambda"
  105. 1050 RETURN
  106. 1160 RETURN
  107. 1170 LOCATE 25,1:PRINT "Type <return> to continue";:INPUT Q
  108. 1180 '      RECTANGULAR PLOT OF DATA
  109. 1190 SCREEN 2:CLS
  110. 1200 FOR K=7 TO 67 STEP 10:LOCATE 20,K:PRINT"+";:NEXT K
  111. 1210 FOR K=4 TO 20 STEP 4:LOCATE K,67:PRINT"-":NEXT K
  112. 1220 VIEW (52,28)-(530,154),,1
  113. 1230 LINE (239,0)-(239,154)
  114. 1240 RETURN
  115. 1250 '
  116. 1260 PSET (0,Y(0))
  117. 1270 WINDOW (-1,YMIN)-(1,YMAX)
  118. 1280 K=0
  119. 1290 FOR X=-1 TO 1 STEP 1/100
  120. 1300   LINE -(X,Y(K))
  121. 1310 K=K+1
  122. 1320 NEXT X
  123. 1330 LOCATE 3,20:PRINT"MAGNITUDE OF SYNTHESISED PATTERN"
  124. 1340 LOCATE 4,75:PRINT"dB"
  125. 1350 FOR K=4 TO 20 STEP 4:LOCATE K,68:PRINT USING "###.##";-(YMAX-YMIN)*(K-4)/16:NEXT K
  126. 1360 LOCATE 21,6:PRINT"180":LOCATE 21,36:PRINT"90":LOCATE 21,67:PRINT"0"
  127. 1370 RETURN
  128. 1380 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
  129. 1390 PRINT"I'M D      OME CALCULATION.  PLEASE WAIT..."
  130. 1400 RETURN
  131. 1410 T$="DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1470
  132. 1420 AN$=INKEY$
  133. 1430 IF AN$="Y" OR AN$="y" THEN RUN
  134. 1440 IF AN$="N" OR AN$="n" THEN END
  135. 1450 GOTO 1410
  136. 1460 :
  137. 1470 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$:RETURN    'SUBROUTINE TO CENTRE TEXT
  138.